package 二分查找;

/**
 * 我们强调，二分的本质是「二段性」而非「单调性」，而经过本题，我们进一步发现
 * 「二段性」还能继续细分，不仅仅只有满足 01特性（满足/不满足）的「二段性」可以使用二分，
 * 满足 1? 特性（一定满足/不一定满足）也可以二分。
 *
 */
public class LeetCode162_寻找峰值 {
    public int findPeakElement(int[] nums) {
        int n = nums.length;
        int row = 0;
        int col = n-1;
        if(n == 0) {
            return -1;
        }
        if(n == 1) {
            return 0;
        }
        // 爬山，一定往上爬，因为两端都会下山，一定有路
        while(row < col) {
            int mid = row + (col-row) / 2;
            if(nums[mid] > nums[mid+1]) {
                col = mid;
            } else {
                row = mid+1;
            }
        }
        return col;
    }
}
